| Miles Sound System SDK 7.2a |
When it comes to picking a topology for your voice-networking subsystem, several options are available. Which one is right for your application will be determined by such factors as the nature of your application's existing network support (if any), availability of server-side and client-side network bandwidth, and availability of server-side and client-side processing power.
In a pure client-server model, as illustrated by the MSSCHTC and MSSCHTS example applications, only one compression and one decompression thread run on each client. Data is acquired at the client, compressed, and transmitted to the server. At the server side, incoming data from each client is decompressed and mixed with data from other clients, then transmitted back to each client. Each stream transmitted from the server must be mixed and compressed discretely to avoid echoing a given client's contribution to the mix back to that client. Server-side I/O bandwidth and processing overhead can be quite high unless special measures are taken to optimize bandwidth. Such measures might include permission-to-talk schemes such as outlined in the Push-to-talk section above, and/or simply limiting the number of clients allowed to contribute to the output mix at any given time.
A peer-to-peer model implies that each client runs one compression thread and as many decompression threads as are necessary to receive speech from all other clients who may be speaking. All decompression and mixing takes place redundantly at each client, and all compressed data must be sent to every other client. Lacking an adequate IP-multicast-compatible transport layer, the pure peer-to-peer model does not scale adequately beyond a few clients in the general case. However, the peer-to-peer model may represent the simplest and most efficient way to implement person-to-person IP telephony applications and two-player games.
A distributed-server model may be an excellent compromise in massively-multiplayer games and online communities, especially in cases where centralized server resources are limited or nonexistent. In a distributed-server environment, each client station acts as a mixing server for a limited number of other clients, typically partitioned by "channels" or other logical divisions between groups of users that don't need to talk to each other on a continuous basis. Communication between any two users may still be established on demand by means of appropriate interfaces in the game or online environment, subject to a given number of simultaneous "connections" allowed at each client.
Next Topic (Mixing the Client Sound Data on the Server)
Previous Topic (Performing the Compression and Decompression)
Group:
Implementing Voice Chat
For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.